home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / a_utils / perl / perl5a1.lha / perl5alpha1 / do / msgrcv < prev    next >
Encoding:
Text File  |  1992-08-15  |  770 b   |  35 lines

  1. int
  2. do_msgrcv(arglast)
  3. int *arglast;
  4. {
  5. #ifdef HAS_MSG
  6.     register STR **st = stack->ary_array;
  7.     register int sp = arglast[0];
  8.     STR *mstr;
  9.     char *mbuf;
  10.     long mtype;
  11.     int id, msize, flags, ret;
  12.  
  13.     id = (int)str_gnum(st[++sp]);
  14.     mstr = st[++sp];
  15.     msize = (int)str_gnum(st[++sp]);
  16.     mtype = (long)str_gnum(st[++sp]);
  17.     flags = (int)str_gnum(st[++sp]);
  18.     mbuf = str_get(mstr);
  19.     if (mstr->str_cur < sizeof(long)+msize+1) {
  20.     STR_GROW(mstr, sizeof(long)+msize+1);
  21.     mbuf = str_get(mstr);
  22.     }
  23.     errno = 0;
  24.     ret = msgrcv(id, (struct msgbuf *)mbuf, msize, mtype, flags);
  25.     if (ret >= 0) {
  26.     mstr->str_cur = sizeof(long)+ret;
  27.     mstr->str_ptr[sizeof(long)+ret] = '\0';
  28.     }
  29.     return ret;
  30. #else
  31.     fatal("msgrcv not implemented");
  32. #endif
  33. }
  34.  
  35.